--- /dev/null
+From: Sebastian Keller <skeller@gnome.org>
+Date: Wed, 16 Dec 2020 20:57:31 +0100
+Subject: settings: Change gtk-cursor-aspect-ratio from float to double
+
+Float properties can not be read from keyfiles. This was causing changes
+to this property in settings.ini to be ignored. Fix this by changing it
+to a double.
+
+Technically this change could be considered an API break, but there are
+no users of this property as float yet and it is early enough to expect
+there to never be any.
+
+Also document this change in the 3 to 4 migration guide since in gtk 3
+this setting will be kept a float.
+
+Bug: https://gitlab.gnome.org/GNOME/gtk/-/issues/3441
+Origin: upstream, 4.0.1, commit:02f06813447cd3a4dfe3472e942bc94a21e5f6c3
+---
+ docs/reference/gtk/migrating-3to4.md | 5 +++++
+ gtk/gtksettings.c | 10 +++++-----
+ gtk/gtkstylecontext.c | 8 ++++----
+ 3 files changed, 14 insertions(+), 9 deletions(-)
+
+diff --git a/docs/reference/gtk/migrating-3to4.md b/docs/reference/gtk/migrating-3to4.md
+index 461be38..a8ba76e 100644
+--- a/docs/reference/gtk/migrating-3to4.md
++++ b/docs/reference/gtk/migrating-3to4.md
+@@ -1157,6 +1157,11 @@ shows a #GtkFileChooserNative dialog when clicked; once the file selection
+ has completed, you can update the label of the #GtkButton with the selected
+ file.
+
++### Adapt to changed GtkSettings properties
++
++In GTK 3 the #GtkSettings:gtk-cursor-aspect-ratio property of #GtkSettings was
++a float. In GTK 4 this has been changed to a double.
++
+ ## Changes to consider after the switch
+
+ GTK 4 has a number of new features that you may want to take
+diff --git a/gtk/gtksettings.c b/gtk/gtksettings.c
+index 6345550..595e7a1 100644
+--- a/gtk/gtksettings.c
++++ b/gtk/gtksettings.c
+@@ -386,11 +386,11 @@ gtk_settings_class_init (GtkSettingsClass *class)
+ g_assert (result == PROP_SPLIT_CURSOR);
+
+ result = settings_install_property_parser (class,
+- g_param_spec_float ("gtk-cursor-aspect-ratio",
+- P_("Cursor Aspect Ratio"),
+- P_("The aspect ratio of the text caret"),
+- 0.0, 1.0, 0.04,
+- GTK_PARAM_READWRITE));
++ g_param_spec_double ("gtk-cursor-aspect-ratio",
++ P_("Cursor Aspect Ratio"),
++ P_("The aspect ratio of the text caret"),
++ 0.0, 1.0, 0.04,
++ GTK_PARAM_READWRITE));
+ g_assert (result == PROP_CURSOR_ASPECT_RATIO);
+
+ result = settings_install_property_parser (class,
+diff --git a/gtk/gtkstylecontext.c b/gtk/gtkstylecontext.c
+index 598c255..71f4750 100644
+--- a/gtk/gtkstylecontext.c
++++ b/gtk/gtkstylecontext.c
+@@ -969,7 +969,7 @@ draw_insertion_cursor (GtkStyleContext *context,
+ double x,
+ double y,
+ double height,
+- float aspect_ratio,
++ double aspect_ratio,
+ gboolean is_primary,
+ PangoDirection direction,
+ gboolean draw_arrow)
+@@ -1032,7 +1032,7 @@ draw_insertion_cursor (GtkStyleContext *context,
+
+ static void
+ get_insertion_cursor_bounds (double height,
+- float aspect_ratio,
++ double aspect_ratio,
+ PangoDirection direction,
+ gboolean draw_arrow,
+ graphene_rect_t *bounds)
+@@ -1073,7 +1073,7 @@ static void
+ snapshot_insertion_cursor (GtkSnapshot *snapshot,
+ GtkStyleContext *context,
+ double height,
+- float aspect_ratio,
++ double aspect_ratio,
+ gboolean is_primary,
+ PangoDirection direction,
+ gboolean draw_arrow)
+@@ -1136,7 +1136,7 @@ gtk_snapshot_render_insertion_cursor (GtkSnapshot *snapshot,
+ {
+ GtkStyleContextPrivate *priv = gtk_style_context_get_instance_private (context);
+ gboolean split_cursor;
+- float aspect_ratio;
++ double aspect_ratio;
+ PangoRectangle strong_pos, weak_pos;
+ PangoRectangle *cursor1, *cursor2;
+ GdkSeat *seat;